<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/vue/2.6.14/vue.js" type="application/javascript"></script>
</head>
<body>
  <div id="app">
    <!-- 回顾v-bind -->
    <!-- 标准写法 -->
    <!-- <input v-bind:value="username"></input> -->
    <!-- 简化写法 -->
    <!-- <input :value="username"></input> -->
    <!-- 
      高级语法 
      用途:批量绑定属性,简化模板
      特征:v-bind="对象"
      注意事项: 对象属性名称和要绑定属性一致
    -->
    <input v-bind="obj"></input>

    <!-- 回顾v-on -->
     <!-- 标准写法 -->
    <!-- <input v-on:keyup="onKeyup"></input> -->
    <!-- 简化写法 -->
    <!-- <input @keyup="onKeyup"></input> -->
    <!--  
      高级语法
      用途:批量绑定事件,简化模板
      语法:v-on="对象"
      注意事项:
        对象定义在data
        对象属性名称和事件名称一致
        单独批量绑定缺点,代码可读写不高,不建议使用,但是它和$listeners结合一起非常好
    -->
    <input v-on="events"></input>
  </div>
</body>
<script>
  new Vue({
    el: '#app',
    data(){
      return {
        username: 'zs',
        disabled:true,
        obj:{
          username: 'zs',
          disabled:true
        },
        events:{
          keyup(){
            console.log('--onkeyup--')
          },
          input(){
            console.log('--oninput--')
          }
        }
      }
    },
    methods: {
      onKeyup(){
        console.log('--onKeyup--')
      }
    }
  })
</script>
</html>
